// PENDIENTE

package Modelo;
import java.sql.*;
// Crear clase planes y añadir metodos para manejar el CRUD.
public class Planes {
    Connection con;

  

    public Planes() {
        
        this.con = Conexion.getConexion();
    }
// Obtener planes.
    public Object[][] getPlanes() {
        
        Object[][] filas = null;
        try {
            Statement query = this.con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
            ResultSet res = query.executeQuery("SELECT * FROM Planes");
            //Clase para obtener más datos sobre la consulta
            ResultSetMetaData resmd = res.getMetaData();
            //Obtengo el total de columnas de la consulta
            int totalColumnas = resmd.getColumnCount();
            res.last();
            //obtengo el total de filas
            int totalFilas = res.getRow();
            res.beforeFirst();
            
            //Creo el objeto filas
            filas = new Object[totalFilas][totalColumnas];
            
            //Mientras hallan resultados poblo el objeto filas para luego devolverlo
            while (res.next()) {          
                for (int i = 0; i < totalColumnas; i++) {
                    filas[(res.getRow()-1)][i] = res.getString((i+1));
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return filas;
    }
// Eliminar Planes.
    public void deletePlanes (int id_plan) {
        try {
            PreparedStatement query = this.con.prepareStatement("DELETE FROM Planes WHERE id_plan=?");
            query.setInt(1, id_plan);
            query.executeUpdate();
            query.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
// Agregar  Planes
    public boolean addPlanes(String nombre, int id_servicio) {
      
        
        if(this.existePlan(nombre.trim())){
            Funciones.mensaje("El plan ya existe, prueba con otro");
            return false;
        }
        try {
            PreparedStatement query = this.con.prepareStatement("INSERT INTO Planes (nombre,id_servicio) values (?,?);");
            query.setString(1, nombre.trim());
            query.setInt(2, id_servicio);
          
            query.executeUpdate();
            query.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return true;
    }
    // Comprobar si ya existe el plan
    public boolean existePlan(String nombre) {
        boolean existe=false;
        try {
            PreparedStatement query = this.con.prepareStatement("SELECT id_plan FROM Plan WHERE nombre=?");
            query.setString(1, nombre.trim());
            query.executeQuery();
             ResultSet res = query.executeQuery();

            if (res.next()) {
                existe = true;
            } else {
                existe = false;
            }
            query.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return existe;
    }
    
    // Actualizar planes
    public void updatePlanes(String nombre, int id_plan, int id_servicio){
       try {            
            PreparedStatement pstm = this.con.prepareStatement("update Plan " +
            "set nombre= ? ,"+ 
             "id_servicio = ?" +      
            "where id_plan = ? ");            
            pstm.setString(1, nombre);                   
            
            pstm.setInt(2, id_plan);
            pstm.execute();
            pstm.close();            
         }catch(SQLException e){
         System.out.println(e);
      }
   }
}
